// Copyright 2022 Huawei Cloud Computing Technology Co., Ltd.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

#include "CPHMediaEngine.h"

/**
     * @功能描述：构造函数
     */
CPHMediaEngine::CPHMediaEngine(){};

/**
 * @功能描述：析构函数
 */
CPHMediaEngine::~CPHMediaEngine(){};


/**
 * @功能描述：版本号获取
 * @返回值：版本号
 */
const char* CPHMediaEngine::GetVersion() {
    return "";
}

/**
 * @功能描述：获取媒体服务支持能力
 * @返回值：云手机支持能力json串
 */
const char* CPHMediaEngine::GetCPHMediaFeatures() {
    return "";
}

/**
 * @功能描述：视频初始化及启动
 * @参数：	jsonConfig     json格式的视频配置参数
			VideoCallback  视频回调函数
 * @返回值：0成功 -1失败
 */
int CPHMediaEngine::OpenVideo(const char* jsonConfig, VideoCallback callback) {
    return 0;
}

/**
 * @功能描述：视频停止并销毁
 * @返回值：0成功 -1失败
 */
int CPHMediaEngine::CloseVideo() {
    return 0;
}

/**
 * @功能描述：视频参数设置,json字符串，只需要提供需要修改的字段
 * @返回值：0成功 -1失败
 */
int CPHMediaEngine::SetParams(const char* jsonConfig) {
    return 0;
}

/**
* @功能描述：物理分辨率参数设置
* @参数：width目标宽度，height目标高度
* @返回值：0成功 -1失败
*/
int CPHMediaEngine::SetPhysicalResolution(int width, int height) {
    return 0;
}

/**
 * @功能描述：强制产生I帧
 */
int CPHMediaEngine::GenerateKeyFrame(){
    return 0;
};

/**
 * @功能描述：使用json配置参数启动音频服务，获取音频数据
 * @参数 [in]：const char* jsonConfig: json格式音频初始化参数
				AudioCallback callback: 音频数据回调函数
 * @返回值：0成功，-1启动音频服务失败
 */
int CPHMediaEngine::OpenAudio(const char* jsonConfig, AudioCallback callback) {
    return 0;
}

/**
* @功能描述：结束音频服务
* @返回值：0成功 -1销毁音频服务失败
*/
int CPHMediaEngine::CloseAudio() {
    return 0;
}

/**
 * @功能描述：注入触控数据
 * @参数 [in] inputTouch：触控数据结构体
 * @返回值：0成功，小于0数据处理失败
 */
int CPHMediaEngine::InjectTouchData(const InputTouch &inputTouch) {
    return 0;
}

/**
 * @功能描述：注入按键数据
 * @参数 [in] inputKey：键值数据结构体
 * @返回值：0成功，小于0数据处理失败
 */
int CPHMediaEngine::InjectKeyData(const InputKey &inputKey) {
    return 0;
}

/**
 * @功能描述：服务端接收手柄操控数据处理(有客户端配套)
 * @参数 [in] buf:接收的操控数据的内存指针
 * @参数 [in] length:接收的操控数据长度
 * @返回值：0成功，-1数据处理失败
 */
int CPHMediaEngine::InjectAxisData(void *buf, unsigned long length) {
    return 0;
};

/**
 * @功能描述: 通过仿真硬件类型和初始化参数，初始化仿真硬件
 * @参数[in]: VmiDeviceType deviceType: 仿真硬件类型
 *           VmiConfigParams& params: 仿真硬件初始化参数
 *           VmiDeviceCallback callback: 仿真硬件回调函数
 * @返回值:  0: 成功;
 *         -1: 仿真硬件初始化失败;
 */
int CPHMediaEngine::InitVmiDevice(VmiDeviceType deviceType, VmiConfigParams& params, VmiDeviceCallback callback) {
    return 0;
}

/**
 * @功能描述: 通过仿真硬件类型使能对应仿真硬件
 * @参数[in]: VmiDeviceType deviceType: 仿真硬件类型
 * @返回值:  0: 成功;
 *         -1: 仿真硬件使能失败;
 */
int CPHMediaEngine::EnableVmiDevice(VmiDeviceType deviceType) {
    return 0;
}

/**
 * @功能描述: 通过仿真硬件类型禁用对应仿真硬件
 * @参数[in]: VmiDeviceType deviceType: 仿真硬件类型
 * @返回值:  0: 成功;
 *         -1: 仿真硬件禁用失败;
 */
int CPHMediaEngine::DisableVmiDevice(VmiDeviceType deviceType) {
    return 0;
}

/**
 * @功能描述: 通过仿真硬件类型销毁对应仿真硬件
 * @参数[in]: VmiDeviceType deviceType: 仿真硬件类型
 * @返回值:  0: 成功
 *         -1: 仿真硬件销毁失败
 */
int CPHMediaEngine::DestroyVmiDevice(VmiDeviceType deviceType) {
    return 0;
}

/**
 * @功能描述: 数据注入到仿真硬件
 * @参数[in]: VmiDeviceType deviceType: 仿真硬件类型
 *            uint8_t* data；注入的数据
 *            uint32_t len：数据长度
 * @返回值:  0: 成功
 *         -1: 仿真硬件数据注入失败
 */
int CPHMediaEngine::VmiDeviceSend(VmiDeviceType deviceType, uint8_t* data, uint32_t len) {
    return 0;
}

/*
 * @功能描述: 通过仿真硬件类型获取对应仿真硬件状态
 * @参数[in]: VmiDeviceType deviceType: 仿真硬件类型
 * @返回值: VMI_INVALID 无效
 *         VMI_INIT 初始化
 *         VMI_ENABLED 使能
 *         VMI_DISABLED 禁止
 */
VmiDeviceStatus CPHMediaEngine::GetVmiDeviceStatus(VmiDeviceType deviceType) {
    return VMI_INVALID;
}
